/**
 * Radio.java
 * @author Sección 20, Algoritmos y estructura de datos
 * @since 05/07/2012
 * Descripción: Interfaz de un radio que es capaz de ser encendido, apagado, 
 *              cambiar de banda, avanzar de frecuencia y almacenar 12 estaciones
 *              para cada una de las bandas.
 */

public interface Radio {

    //**Constantes**
    
    /**
     * Mínima frecuencia en AM.
     */
    public final int AM_MIN = 530;
    
    
    /**
     * Máxima frecuencia en AM.
     */
    public final int AM_MAX = 1610;      
    
    /**
     * Mínima frecuencia en FM.
     */
    public final float FM_MIN = 87.9f;
    
    /**
     * Máxima frecuencia en AM.
     */
    public final float FM_MAX = 107.9f;
    
    /**
     * Cambio de frecuencia en AM.
     */
    public final int   AM_D = 10;  
    
    /**
     * Cambio de frecuencia en FM.
     */
    public final float  FM_D = 0.2f;
    
    //**Métodos**
    
    /**
     * onOff: Permite apagar o encender la radio.
     */
    public void onOff();
    
    /**
     * cambiarBandar: Permite cambiar entre AM y FM.
     */
    public void cambiarBanda();
    
    /**
     * cambiarFrecuencia: Permite avanzar en la frecuencia de la banda saleccionada.
     */
    public void cambiarFrecuencia();
    
    /**
     * guardarEstacion: Almacena la frecuencia actual de la radio, siendo aparte
     * la memoria para AM y FM.
     * @param boton Número del botón en el cual se guardará la estación.
     */
    public void guardarEstacion(int boton);
    
    /**
     * seleccionarEstacion: Cambia la frecuencia de la radio correspondiente al
     * botón presionado.
     * @param boton Número del botón presionado.
     */
    public void seleccionarEstacion (int boton);
    
    /**
     * getFrecuencia: Devuelve la frecuencia actual de la radio, dependiente de
     *                si esta se encuentra en AM o FM.
     * @return Frecuencia seleccionada actualmente.
     */
    public float getFrecuencia();

    /**
     * isOn: Permite saber si la radio está encendida o no.
     * @return True si el radio está encendido, false de lo contrario.
     */
    
    public boolean isOn();
    
    /**
     * isAM: Permite saber si la radio está en banda AM o no.
     * @return True si está en AM; false si no.
     */
    public boolean isAM();
    
    /**
     * isFM: Permite saber si la radio está en banda FM o no.
     * @return True si está en FM; false si no.
     */
    public boolean isFM();
    
}